Network ~ComputerとComputerをつなぐもの~
https://gyazo.com/16900cade413dfa141134aec06014a43
https://gyazo.com/09b5ea32a8c216d8e88bfabdbeaefa65 https://docs.google.com/presentation/d/1ZlOXr0Dgypp2ANz2ZYCbV5YiNTBWhJkfza_W4KrcgcY/edit#slide=id.gb83e38e90d_0_504
Networkにおいて、IT知識として理解しておくと良いこと
以上。
他の情報は、TCP/IPだから…という観点で説明がつく
Network関連の知識
Networkの概要
豆知識/お役立ち情報
Internetを身近に感じる HandsOn Workshop
Networkは現代の「Computer」「Software」のInfrastructure
Infrastructureは日本語では「基盤」
例えば水道、ガス、電気、Internet
基盤なので普段は意識しない
しかし、有事に影響を受ける
基盤にも不具合は起きる(滅多に起きないはず)
避難訓練、防災バッグのように「有事を想像して事前に準備」することは必要
Networkは「ComputerとComputer」をつなぐもの
Computer内でも使われる
Network、広く言えば「通信」はComputerの基礎基本
物理的に分断されていれば必ず「つなぐ」必要がある
「つなぐ」限りはそこに通信が発生する
CPU ⇆ Memory, CPU ⇆ GPU ⇆ Display
Computerは「全てのパーツが正常に動く」ことが前提
ボトルネック
ITの分野では、機器やソフトウェア、システム、ネットワークなどを構成する要素のうち、系全体の処理や伝送の最大速度を決定付ける、他よりも性能の劣った、あるいは負荷が集中して混雑している要素のことをボトルネックという。
「PCが重い」「急に動かなくなった」はよくあること
たった一つの小さなPartsが大きく性能劣化を起こす世界
Computerを使う限り「Network不具合」の影響は起こりうる
不具合起こると大変
Infraは普段意識されないため…無知であることが多い
専門家の人数が少ないため、高需要で高価格になりがち
コラム)Infraこそみんな学ぶと良いと思うsawachin.icon
Application(Infraの対極)は1,2年単位でtrendが変わる
数年前までRuby on Railsが主流だったが、今はいろんなFrameworkが各所で使われている
Infraは、身につけた知識が長い期間活きる
数年どころか数十年使える
Infraは得てして巨大 & 利用者が多いので進化がゆっくり
進化したとしても後方互換を備えているため、知識を使い続けられる Applicationよりも「Computerの原理原則」に近い知識であるため、各所で活きる
Computer/Networkはフラクタル構造
フラクタル(仏: fractale, 英: fractal)は、フランスの数学者ブノワ・マンデルブロが導入した幾何学の概念である。ラテン語の fractus から。図形の部分と全体が自己相似(再帰)になっているもの
スイミーみたいな感じ
https://gyazo.com/616e87b7cd73e5d9f38c66bf8aae4b11 http://www.kogakusha.com/book/187/
魚が集まって魚を作っている
Computer/Networkも同じ
本質的な少しのRule, 仕組みが億/兆という規模で連なることで、大きなものを作っている
ComputerはDataとProcessingの集合体
Dataは突き詰めると「0,1」
Processingは「論理ゲート(AND/ OR/ NOT……)」
Network, Codingのような「すごく小さな仕組み」を多面的に深く理解することが、大規模Softwareの理解につながる
コラム)論理ゲートにはたくさん種類があるがNANDのみで全ての論理回路は実現できる 一般に、いくつかの限られた種類の論理演算を任意個組み合わせることにより、任意のブール関数を構成可能であることを、その演算の組は functionally complete であるという(詳細は英語版記事 en:Functional completeness を参照)。ANDとORはどちらも単調であるため「ANDとOR」だけでは完全にならず、NOTを加える必要がある。一方「ANDとNOT」や「ORとNOT」は完全であり、ANDとNOTの組合せであるNAND(や、NOR(否定論理和))はそれひとつだけで完全である。以下にNOT・AND・ORのNANDのみによる構成を示す。
本来、論理回路は「AND」「OR」「NOT」の3つを組み合わせて作る必要がある
が、実はNANDだけで作れる
論理回路はProcessingの部分。つまり「CPU」と読み替えることができる
このPageで学ぶことは大きく1つだけ
TCP/IPの話を聞く前に、まずは前提知識から理解していく
世界はInternetで繋がっている
これは以下で読み替えられる
1969 年にアメリカ国防総省で作られた後、
規模が拡大し…世界中をつないでいる
イメージ図
https://gyazo.com/6b64873d346b63a65efdcb1956eec57c
規模が大きい
1組織で管理できるモノじゃない
Internetはあまりにも規模が大きいので3層に分類して共同管理している
Internet Service Provider
ISPの中には「大手」「中小」が存在している
https://gyazo.com/6d5f627584369e35e193922f7ae55e04
コラム)3層。「お金の掛け方」が全然違う
Tier1は世界を支える。一番お金をかける
Tier2…Tier3…とInternetの末端になると「利用者」が減るので、お金もかけられない
Tier1は高速道路
Tier2は幹線道路
Tier3は公道
もちろん私道もある
ネット回線が「遅くなる理由」は道路を想像してみるとわかりやすい
https://gyazo.com/2273a940baaa9857840f4eb57f72a577
数(同マンション利用者)が多いと混む
コラム)家のネット環境を構築するときに読みたい資料
世界中の全体感・考え方がわかったところで、「物理的にどうつないでいるか」の話をする
https://gyazo.com/831d590d29c9da9229306af11ec72eb5
光ファイバーを束ねて利用することで世界中の人が高速通信を教授できている
よく「光信号は光だから、すごく速いんでしょ?」という声も耳にしますが、これは間違い。
光も電気も、そのもののスピードには大きな差はありません。
それではなぜ光信号を使った光回線のほうが速いのかと言えば、「光信号は電気信号に比べて1と0の切り替えが高速でできるから」というのが理由。
つまり、電気の変調よりも光の点滅のほうがスピードが速いんです。
具体的に言えば、電気信号は1秒間に約100億個の信号が送れるのに対し、光信号は1秒間に1兆個もの信号を送ることが可能。
そのため、光信号は電気信号に比べて、短時間でより大容量の通信を行うことができるのです。
光ファイバー…光と聞くと「世の中で一番速い!」と言うことで、そこが利点と思いがちsawachin.icon 光自体は1種の電磁波(つまり電気)。速さは変わらない
Cableだけでは「送りたい相手にDataを送る」ことはできない
うまく相手に届けるための仕組みが必要
Routerが適切に誘導することで「任意の相手と通信できる」ようになっている CableとCableが繋がるHub部分にRouterが存在する (RouterのImageは以下)
https://gyazo.com/603a27223d7717c82923e0ddcbdc83e7
Router + Cableによる仕組みはとても簡単
従来の回線交換の仕組みでは以下の図のような構成になっていた https://gyazo.com/6c1640f0142763feda90d86beb07dc25
そもそも、複数端末を繋ぐことに向いていない
回線を流れるデータ量にかかわらず、複数の端末による伝送路などの共有ができないため、利用効率が悪い。
物理的な伝送路を物理的な方法により交換する場合、交換設備が物理的に大型になる
以下のような構成にすることで「中央集権での管理」なくComputerとComputerを繋ぐことができる
https://gyazo.com/6b64873d346b63a65efdcb1956eec57c
ちなみに、回線交換とは
例え話をしていなかったとしても、回線が繋がっている間はずっと専有されている状態で、他の誰かが使うことはできません。なので、専有されている回線に電話をかけても「通話中」になってしまいます。この通信方法が「回線交換」というものです。
https://gyazo.com/37800fbdc865e6cb2740d7af0290a97c
これに対して、「パケット交換」という通信方法が1960年代に提唱されました。これによって複数の通信を1つの回線で共用することが可能になり、通信の効率化が進みました。そして、これを最大限活用したのがインターネットという通信方法なのです。
家に電話があることがとても珍しい時代
交換手と呼ばれる人が、「AさんとBさんを繋ぐ」ようにしてくれる 翻って、パケット通信とは?
以下Pageを一緒に読みましょう
ということで現時点でのSummary
1. Internetとは光ファイバー + Routerで作られた「全世界の人をつなぐ」仕組み
2. Networkは「道路」に喩えて理解するとわかりやすい
ここからはより具体的な技術の話をする
車を運転するとき、「いきたい場所」にたどり着くまで必要なものは以下
1. 車が走れる道
2. みんなで一緒に道路を使うルール(例:左側通行・制限速度)
3. たどり着く場所の住所
4. 分岐点での看板
「1.」は話したので、「2.」,「3.」,「4.」を話していく
2. みんなで一緒に道路を使うルール(例:左側通行・制限速度)
TCP, IP, IEEE, MACアドレス…などなどたくさんあります。
全てまとめてprotocolという
protocolにて以下2つも定義されているため、まずprotocolを理解していく
3. たどり着く場所の住所
4. 分岐点での看板
protocolは他のTechnology同様いくつか種類がある
目的に合わせて選ぶ
protocolが100種類あったときに、「どのprotocolとどのprotocolは代替可能なのか?」は大事な観点
OSI参照モデルという「Computer間の通信技術」を7層に分けたModelがある https://gyazo.com/e4e882fa8caff8b085c26eb6e3fe0c46
「Computer間の通信を安心・安全に行う」のは想像以上に難しい
何百kmも離れた
数億、数十億のComputerが繋がれた
そんなInternetの中を「安心・安全」にするためには技術がたくさん使われている 7層。それぞれになっていることが違う
ざっくりは以下のようになっている
1. 物理層 物理的にどういうものを通るの?(光ファイバ?無線LAN?)
2. Datalink層 物理線の中で、ソフトウェア的にどうデータを送る?(無線LANの規格 etc)
3. Network層 通信線は途中で何度も分岐するけど…「通信経路」をどう選ぶ?(IP) 4. Transport層 相手にdata送るときの「error(dataが壊れちゃったetc)」をどう防ぐ?(TCP) 5. Session層 大きいData送るのに時間かかるけどどうやる?(TCP) 6. Presentation層 送るデータは「どんな言語(文字コードなど)、どんな形式」で送られている?
7. Application層 PC,serverではどんな形式で読み込み/書き出しされる?(HTTP) 上記7層、普段は意識しなくていいようになっているsawachin.icon
HTTPを使えば、残り6層は意識せずに使えるようになっている
上記7層で言うと、「Network層」が、「たどり着く場所の住所」と「分岐点での看板」を決めている
3. たどり着く場所の住所
IPとはInternet Protocolのこと
(まんまですねsawachin.icon)
ネットワークに接続されている全てのコンピュータに対して、IPアドレスと呼ばれる番号を付与し、その番号を用いて通信先の指定及び呼び出しを行う(この考え方は電話番号と似ている)
住所。だけど一意じゃない
「日本 〒100-8111 東京都千代田区千代田1−1」にも複数Computerが存在する。
Googleは8.8.8.8
192.168.xx.xx
https://gyazo.com/452aab1ef0dae1da2a17ff6fecf848d1
https://gyazo.com/81ccee4b312e168803f88824959e0da9
住所はわかった。
次は「その住所までたどり着くにあたってRouter(=交差点)でどの道を選べばいいか」の判断の話をする
Routerは中に「Routing Table」をもち、それとの照合で「Dataの横流し先」を決めている
https://gyazo.com/e098f53a81b0c8a3ec00d0b72cc20c76
table:;Routing Table
~123.23.255.255 A
~200.12.255.255 B
~255.255.255.255 C
IP addressは(IPv4)の世界だと4つの数字(0~255)の組み合わせで表現される 数字の組み合わせであるためRouting Tableが単純
「どこに流すか?」の判断logicがsimpleなので、Routerが安価で作れる
この「Simpleである」はとても大事な話
「爆発的」とした要因は4つある
Open であること
仕様が公開されない独自規格や、参照に費用のかかる規格に比べると、 開発・実装のハードルが下がる
パケット通信 であること
回線交換と比べて、「たくさんの人が繋がる」のに適していた Simple であること
「信頼された通信」のみを実装する。
「通信を傍受されないこと」などは他のprotocolに担当させた(参考:SSL通信) 結果として
TCP/IPの普及はLANの姿も変えることになりました。 当時、LAN内でのファイル共有には別のプロトコルが主流でしたが、 インターネットの普及に伴いLAN内でもTCP/IPを使うようになり、Windows、 Macintoshともども徐々にではありますが、TCP/IPの利用範囲が広がっていきます。 その結果、 2017年現在ではLAN内でもほぼTCP/IPのみが使われるという状況になっています。
これはすごいこと。
そもそもTCP/IPとは何か
IPとは
さっくり言うと「Networkに繋がるすべてのComputerに住所(≒電話番号)をつける」仕組み
TCPとは
TCPは、アプリケーションプログラムと Internet Protocol (IP) の中間の層で通信サービスを提供する。すなわち、アプリケーションプログラムがIPを使って大きなデータの塊を送信したいという場合、直接そのデータをIPのサイズで分割して一連のIP要求を発行するのではなく、TCPに1度要求を発行するだけで、TCPにIPの詳細を任せることができる。
IPはパケットと呼ばれる情報の断片をやり取りする形で機能する。パケットは、ヘッダ部に本体が続く形で構成されるオクテット列である。ヘッダ部には、そのパケットの宛先があり、その宛先に到達するために中継で使用すべきルーターを指定することもある。本体にはIPが転送すべきデータが格納される。
ネットワークが混雑(輻輳)したり、トラフィックを負荷分散させようとしたり、その他ネットワークの予測できない振る舞いにより、IPパケットは喪失したり、重複したり、順序がばらばらで届いたりする。TCPはそれらの問題を検出し、喪失データの再送を要求し、データの順序を正しく並べ替え、さらにネットワークの混雑が起きにくくなるよう制御して他の問題が発生する可能性を低くする。TCPの受信側は、オクテット列の順序を元通りに再現すると、それをアプリケーションプログラムに渡す。したがってTCPは、アプリケーションに対してネットワークの詳細を隠蔽して抽象化しているといえる。
さっくり言うと「相手に届く前に紛失・改竄されないように、Dataの送り方を工夫する」仕組み
TCPとIPをsetで使うことで「数億~数十億の人が繋がるInternetにおいて、どんなに遠い相手でも、どんなに大きなDataでも、間違いなく届ける」ことができるようになる
ここで問題が発生する
TCP/IPは確かに速い。世界を繋いだ。
が、人には使いにくい
数字であることはComputerにとってメリット
人は無理。電話番号見て「誰々さんだ!」と思い出すのは期待してはいけない
IP addressを使えば、確かにweb siteは表示される
https://gyazo.com/585500794bcd1d95ba33dbce5c16a9d7
毎回覚えていられない
だから普段はURL(domain)を活用してwebsiteをみているはず
DNS。Domain Name Server
scrapbox.io
https://scrapbox.io/inteltank/Network_~Computer%E3%81%A8Computer%E3%82%92%E3%81%A4%E3%81%AA%E3%81%90%E3%82%82%E3%81%AE~
名前解決と呼ばれる「domain名に対応した IP address」を返却してくれるServer https://gyazo.com/8081ba0369cf351b2799ac5b6b82a9d9
全てのURLは一度DNSにて「このdomainのIP addressはなに?」と確認されている
URLを入力された後の、「たどるnetwork経路」は以下のようになる
https://gyazo.com/66f479019eda7660245d5b54eaa93530
DNSが正常に動いていないと、Internetがつながらなくなる
コラム)DNSがないと、Routingが死ぬ
Routerから3つ(A,B,C)に分岐するとき
1.iconIP addressではなくURLdomain名そのままを利用する場合
https://gyazo.com/19c6c2095228884f9dd57163e6917847
table:Routing Table
facebook.com A
google.com B
inteltank.com B
... ...
... ...
amazon.com B
URL(domain)が増えるたびに
Routting tableに追記する必要がある
「serverまでどのrouteが最短か?」を予め計算し、世の中にある全てのRouterに記載する必要がある
現実的じゃないsawachin.icon
世界中にいくつのURLがあると思っているんだ
反映するのも大変
Routing Tableと実際の値を照合するのも大変
コラム)実は、IPにも2種類ある
IP address枯渇問題とは
「古くから利用されているIPv4で利用されるaddressに余分がなくなった」こと 2011年2月3日に枯渇している
IP addressが枯渇すると通信ができない
TCP/IPプロトコルではIP addressが「住所」となる IP addressが枯渇すると…「住所がないComputer」が生まれる
住所がないComputerは通信できない
このままじゃ通信できないので、色々工夫がされた
IPv4ではaddressが$ (2^8)^4(=42億)通りしか生み出せない
IPv6では$ (2^8)^6(=$ 2.8 \times 10^{14})通り生み出せる
移行は仕切れないので…段階的にされている
Google,Amazonのようなところは IPv6とIPv4両方のaddressを持つ
IPv6のaddressを持つComputerとはIPv6で通信
持たない場合はIPv4で通信
2.iconIP addressの共同利用
Local IP addressを用いて、「1つのGlobal IP addressを共用」する
例えば、同じ会社/同じ家の人はInternetからは「同一住所」に見える
モデムごとに1つのGlobal IP addressが付与されるため
Local IP addressが違うことは、Internet(外)からは気にされない
3.iconDHCPにて、IP addressを動的に利用 DHCPとは1つのIP addressを「違う会社」「違う家」でも使い回す仕組み
ISPが「物理的に近い複数の家・会社に、必要な時だけIP addressを付与」している つまり、時間帯によって「繋がる場所」が変わる
IP address 104.234.23.1にaccessしたとして
2020/8/31 13:00はsawachin.iconの家につながるけど
2020/9/1 14:00は違う人の家につながるかもしれない
IPv4よりIPv6の方が回線が安定する
IPv6は「直接Serverとやりとりする」ことができるのに対し
IPv4は「ISPが管理するServerを一度経由する」必要がある